home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Shareware / IDimager Personal 4.2.0.3 / setup_IDimager_Personal_V4.exe / {app} / Scripts / GPS Scripts / Remove GPS Data.psc < prev    next >
Text File  |  2008-05-08  |  2KB  |  73 lines

  1. {
  2.   This script will completely remove all GPS info from your images. It deletes
  3.   GPS coordinates from XMP as well as Exif. This can not be undone (unless you
  4.   retag your images with GPS coordinates).
  5. }
  6.  
  7. function CleanupGPS (AImage: TImageItem): Boolean;
  8. var
  9.   AXmp: TXMP;
  10.   ATif: TTif;
  11. begin
  12.   result := False;
  13.  
  14.   // cleanup XMP
  15.   AXmp := TXMP.Create(False);
  16.   Catalog.LoadXMPForImage (AImage, AXmp, Options.CachedXMP);
  17.   if AXmp.HasGPS then
  18.   begin
  19.     result := True;
  20.     AXmp.RemoveGPS;
  21.     Catalog.SaveXMPForImage (AImage, AXmp, Options.CachedXMP);
  22.   end;
  23.   AXmp.Free;
  24.  
  25.   // cleanup Exif
  26.   ATif := TTif.Create(nil);
  27.   ATif.FileName := AImage.ExifFileName;
  28.   ATif.Load (True, False);
  29.   if ATif.HasGPS then
  30.   begin
  31.     result := True;
  32.     ATif.RemoveGPS;
  33.     ATif.UpdateTags;
  34.   end;
  35.   ATif.Free;
  36. end;
  37.  
  38. var
  39.   i: Integer;
  40.   AHit: Integer;
  41. begin
  42.   if not Ask ('Are you sure you want to remove all GPS data (XMP and Exif) for the selected images?') then
  43.    exit;
  44.  
  45.   Progress.Cancel := False;
  46.   Progress.ProgressBar := True;
  47.   Progress.UseProgress;
  48.   Progress.Max := Selected.Count;
  49.   Progress.Show;
  50.  
  51.   AHit := 0;
  52.   for i := 0 to Selected.Count - 1 do
  53.   begin
  54.     Progress.ProgressText := Selected.Items[i].FileName;
  55.     Progress.Pos := i + 1;
  56.     if Progress.Cancel then
  57.       break;
  58.  
  59.     if CleanupGPS(Selected.Items[i]) then
  60.       Inc(AHit);
  61.   end;
  62.  
  63.   Progress.Hide;
  64.  
  65.   // repaint selected images in collection
  66.   InvalidateSelected;
  67.  
  68.   if Progress.Cancel then
  69.     Say (WideFormat ('Cancelled; %d images cleaned so far', [AHit]))
  70.   else
  71.     Say (WideFormat ('Finished; %d images cleaned', [AHit]));
  72. end;
  73.